This disclosure relates to the field of network devices and to systems and methods for allocating network bandwidth between multiple network traffic flows. Any set of related packets is referred to as a network traffic flow. A network traffic flow may include all of the packets associated with a specific source and/or destination device, group of devices, or category of devices. A network traffic flow may include all of the packets associated with a specific application, type of application, or type of data. A network traffic flow may include all of the packets associated with a specific network protocol, network address, network port, or a group of network addresses and/or network ports. A network traffic flow may also include any combination of packets associated as described above and/or according to any arbitrary criteria.
Edge network devices are network devices that connect a local-area network (LAN) to a wide-area network (WAN), such as the internet. Example edge network devices include network routers, switches, gateways, firewalls, and WAN optimization devices. Edge network devices may handle packets generated by and directed to large numbers of source and destination devices over the same interface.
If the bandwidth limit of a WAN, edge network device, and/or any other intervening network device is reached or exceeded by network traffic flows, packets may be delayed or dropped. Depending on the type of data being communicated over the network, these traffic disruptions may adversely affect the performance of applications on a client network. For example, clients receiving voice or streaming video data may be adversely affected by even small delays or losses of packets.
Because of the limits on network device bandwidth, many edge network devices include quality of service (QoS) functionality and implement QoS policies enabled by this functionality. QoS functionality enables network devices to prioritize between different network traffic classes and flows in allocating bandwidth. QoS policies allow network administrators to provide different priorities for different network traffic classes and flows based on factors such as the associated source, destination, user, application, or data type.
A network device that is a bottleneck or point of congestion for network traffic flows is a natural place to implement QoS. By acting as a point of congestion for network traffic flows, the network device effectively controls the rate of all network traffic flows that pass through it. For example, with outgoing network traffic flows, where the network traffic flow originates at the LAN and passes through an edge network device to a WAN, an edge network device is a natural bottleneck, because the bandwidth of the WAN is much less than that of the LAN.
In some applications, it is useful to implement QoS in a network device that is not a bottleneck. It is straightforward to move a bottleneck “upstream” of an existing bottleneck, where “upstream” means in the direction of the greater bandwidth.
However, for incoming network traffic flows, where the network traffic flow passes from a WAN through an edge network device to a LAN on its way to destination devices, the edge network device may not be the bottleneck for these traffic flows. For example, one or more upstream network devices, such as other edge network devices transferring network traffic flows from their source devices to the WAN or network devices operating inside the WAN, may operate as network traffic bottlenecks. Additionally, some communications protocols, such as TCP, include a slow-start congestion control phase during which the sender transmits data at a rate that is a multiple of the rate allocated to the network traffic flow. This slow-start congestion control phase undermines the ability of downstream edge network devices to act as network traffic flow bottlenecks and conform incoming network traffic flows to their desired QoS.